<?php
class Usuario extends Zend_Db_Table
{
    protected $_name = "usuario";
		
    public function lista(array $request)
    {
        $dados = array();
		
	$select = $this->select()
			->from($this, "COUNT(*) AS qtd")
			->where("eativo = ?", 1);
	$result = $this->fetchRow($select);
		
	if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
	}else{
            $total_pages = 0;
	}

	if($request['page'] == 1){
            $start = 0;
	}else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
	}

	$dados['total']	= $total_pages;
	$dados['page']	= $request['page'];
	$dados['records'] = $result->qtd;
	
	 
        
        $select = "SELECT *, CASE tipoUsuario";
	$select .= " WHEN 'C' THEN 'CLIENTE'";
	$select .= " WHEN 'L' THEN 'LABORATÓRIO'";
	$select .= " END AS tipoUsuario,";
        $select .= " nomeCurto as cliente";
    	$select .= " FROM usuario LEFT JOIN cliente on (usuario.idCliente = cliente.idCliente) ";
        $select .= " WHERE usuario.eAtivo = 1";
        
        if($request['sidx']){
            $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
	}else{
            $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
	}
        
        $resultado =  $this->_db->fetchAll($select);
        
        for($cont = 0; $cont < count($resultado); $cont++) {
            $dados['rows'][$cont]['id'] = $resultado[$cont]['idUsuario'];
            $dados['rows'][$cont]['cell'] = array(
						$resultado[$cont]['nome'],
						$resultado[$cont]['login'],
                                                $resultado[$cont]['senha'],
                                                $resultado[$cont]['tipoUsuario'],
						$resultado[$cont]['cliente']
						);
	}
		
	return $dados;
    }

    public function add($usuario, array $request)
    {
       $select = $this->select()
                       ->from($this)
                       ->where('eAtivo = 1 AND LOWER(login) = LOWER(?)', $request['login']);
                       
        $result = $this->fetchRow($select);
        if($request['tipoUsuario'] != 'L')
           $cliente = $request['cliente'];
        else
           $cliente = null;
        
        if(!$result){
            $dados = array(
                'nome' => strtoupper($request['nome']),
                'login' => $request['login'],
                'senha' => md5($request['login']),
                'tipoUsuario' => $request['tipoUsuario'],
                'eAtivo' => 1,
                'idUsuCad' => $usuario,
                'idCliente' =>$cliente
            );
            $resultado = $this->insert($dados);
            if($resultado != 0)
                return 1;
            else
                return 0;
        }
        else
            return 2;
    }
	
    public function edit($usuario, array $request)
    {
        $select = $this->select()
                       ->from($this)
                       ->where('eAtivo = 1 AND LOWER(login) = LOWER(?)', $request['login'])
                       ->where('idUsuario <> ?', $request['id']);
                       
        $result = $this->fetchRow($select);
        
        if(!$result){
            $dados = array(
                'nome' => strtoupper($request['nome']),
                'tipoUsuario' => $request['tipoUsuario'],
                'idUsuAtu' => $usuario,
                'idCliente' =>$request['cliente']
            );
            $where = $this->getAdapter()->quoteInto("idUsuario = ?", $request['id']);
            $resultado = $this->update($dados, $where);
            if($resultado != 0)
                return 1;
            else
                return 0;
        }
        else
            return 2;
    }		
	
    public function del($usuario, array $request)
    {
        $dados = array(
            'eativo' => 0,
            'idUsuAtu' => $usuario
	);
	$where = $this->getAdapter()->quoteInto("idUsuario = ?", $request['id']);
	$resultado = $this->update($dados, $where);
        if($resultado != 0)
            return 1;
        else
            return 0;
    }
    

    public function _getUsuario($id)
    {
        $select= $this->select()
                      ->from($this)
                      ->where (' idUsuario = ?', $id);
        
        $resultado = $this->fetchRow($select);
        return $resultado;
    }
    
     public function _getiDUsuario($login)
    {
        $select= $this->select()
                      ->from($this)
                      ->where (' login = ?', $login);
        
        $resultado = $this->fetchRow($select);
        return $resultado;
    }
    
    public function  saveSenha($idUsuario,$senha)
    {
         
            $dados = array(
                'senha' => $senha
             );
            $where = $this->getAdapter()->quoteInto("idUsuario = ?", $idUsuario);
            $resultado = $this->update($dados, $where);
            if($resultado != 0)
                return 1;
            else
                return 0;      
        
    }
}
?>